Systems and processes for data backup and recovery

ABSTRACT

Systems and processes for backing up data files and recovering data files are described. A computing device connected to a network may backup data files for one or more additional computing devices connected to the network. In some cases, the computing devices connected to the network may be ranked according to a fitness of each respective computing device to backup data files. Additionally, data files of computing devices connected to a network may be prioritized to indicate a level of relative importance to backup each respective data file. Based on the rankings of the computing devices and the prioritization of the data files, particular data files may be associated with a corresponding computing device that is designated to store backup copies of the data files.

CROSS-REFERENCE TO RELATED APPLICATION

The present patent application is a continuation of U.S. patentapplication Ser. No. 15/248,998, filed on Aug. 26, 2016, entitled“Systems and Processes For Data Backup and Recovery” and is incorporatedby reference herein in its entirety and for all purposes as ifcompletely and fully set forth herein.

BACKGROUND

In a home networking environment, data is often backed up manually by anindividual. Often, an individual may purchase an external storage deviceto store copies of data generated by other computing devices of theindividual, such as a desktop computing device, a laptop computingdevice, a tablet computing device, a mobile phone, and so forth. Theindividual may identify data files on a computing device that is to bebacked up, make a copy of the data files, and store copies of the datafiles in the external storage device. For example, an individual maycopy photos, video data, audio data, word processing documents,spreadsheet documents, and the like, from a computing device and storethis data on an external storage device. In situations where data filesare lost or corrupted on the computing device, the individual maymanually locate the copy of the lost or corrupted data files on theexternal storage device, and restore the lost or corrupted data files tothe originating computing device.

SUMMARY

This Summary provides a simplified form of concepts that are furtherdescribed below in the Detailed Description. This Summary is notintended to identify key or essential features and should therefore notbe used for determining or limiting the scope of the claimed subjectmatter.

Techniques and systems to backup and recover data are described. Acomputing device connected to a network may backup data files for one ormore additional computing devices connected to the network. In somecases, the computing devices connected to the network may be rankedaccording to a fitness of each respective computing device to backupdata files. Additionally, data files of computing devices connected to anetwork may be ranked to indicate a level of relative importance tobackup copies of each respective data file. Based on the rankings of thecomputing devices and the prioritization of the data files, particulardata files may be associated with a corresponding computing device thatis designated to store backup copies of the data files.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the present disclosure may be obtainedby reference to the following Detailed Description when taken inconjunction with the accompanying Drawings. In the figures, theleft-most digit(s) of a reference number identifies the figure in whichthe reference number first appears. The same reference numbers indifferent figures indicate similar or identical items.

FIG. 1 is a schematic diagram illustrating an example environment tobackup data and recover data files according to some embodiments.

FIG. 2 is a diagram illustrating an example process to backup dataaccording to some embodiments.

FIG. 3 is a diagram illustrating an example environment to recover dataaccording to some embodiments.

FIG. 4 is a block diagram illustrating an example system to backup andrecover data according to some embodiments.

FIG. 5 is a flowchart of an example process to backup data according tosome embodiments.

FIG. 6 is a flowchart of an example process to backup and recover dataaccording to some embodiments.

FIG. 7 illustrates an example configuration of a computing device thatcan be used to implement the systems and techniques described hereinaccording to some embodiments.

DETAILED DESCRIPTION

Described herein are systems and processes to backup and restore data.In particular, individuals or groups of individuals may utilize a numberof computing devices in a particular environment, such as a living spaceor a workplace. The environment may include one or more wireless accesspoints that the computing devices may utilize to access informationsources, such as the Internet, a wireless wide area network, anenterprise network, a wired wide area network, and the like. One or moreof the computing devices in the environment may be used to backup datafrom other computing devices in the environment. For example, dataoriginally stored on a laptop computing device may be backed up on adesktop computing device. In another example, data originally stored ona mobile phone may be backed up on a desktop computing device or alaptop computing device. External storage devices in the environment mayalso be used to backup data from other computing devices in theenvironment.

A computing device may identify additional computing devices in theenvironment and identify one or more of the additional computing devicesto store copies of files from the computing device. In some cases, theadditional computing devices and the computing device may be connectedto a local wireless network via a local wireless network access point.In this way, the computing device may communicate with the additionalcomputing devices via the wireless access point. In some cases,communications exchanged via the local wireless network may utilize acommunications standard, such as an Institute of Electrical andElectronics Engineers (IEEE) 802.11 communications standard.Additionally, the computing device may also exchange communications withthe additional computing devices via other wireless networks utilizing adifferent communications standard, such as a Bluetooth communicationsstandard.

The computing device may obtain information from the additionalcomputing devices in the network to identify one or more additionalcomputing devices on which to store copies of data files of thecomputing device. In particular, the computing device may analyzeinformation obtained from the additional computing devices to rank theadditional computing devices with respect to one another according to anumber of criteria. The rank of each of the additional computing devicesmay indicate the fitness of the additional computing device to storebackup data files for the computing device. For example, the rank of theadditional computing devices may be based at least partly on storagecapacity of the additional computing devices, a type of chassis of theadditional computing devices, availability of the memory devices of theadditional computing devices, memory device characteristics of theadditional computing devices, or combinations thereof. In some cases, aweighting may be specified for each of the criteria used to determinethe rank of a particular additional computing device. The ranking of theadditional computing devices may indicate a level of reliability of theadditional computing devices with respect to storing backup copies ofdata files. The ranking of the additional computing devices may alsoindicate a level of accessibility of backup copies of data files storedby the additional computing devices.

The computing device may also analyze features of data files stored inthe memory of the computing device to prioritize the data files withregard to backing up the data files on one or more of the additionalcomputing devices. In particular, the computing device may determine arank of the data files with respect to one another based on one or morecriteria. To illustrate, the computing device may determine a rank ofdata files stored in the memory of the computing device based at leastpartly on a storage location of the data files, an amount of memoryspace used to store the individual data files, a type of content of thedata files, a frequency of use of the data files, user-specifiedpriorities, or combinations thereof. By prioritizing the data filesstored in the memory of the computing device, the computing device mayidentify the data files that are relatively more important for theindividual and determine that these relatively important data files arebacked up before other data files.

The computing device may determine data files to be backed up based onthe ranking of the additional computing devices and the ranking of thedata files to be backed up. For example, the computing device mayassociate additional computing devices having relatively higher rankingwith data files having relatively higher rankings. In this way, theadditional computing devices that are determined to have the mostfitness for storing backup data may be used to store the data files thatare determined to have the most importance to the individual.Additionally, the data files having certain characteristics may bebacked up on an additional computing device that is suitable for thosedata files. To illustrate, data files that consume a particular amountof memory space may be stored on additional computing devices that havea sufficient amount of memory space available to store the data files.

The computing device may maintain a manifest indicating a storagelocation of data files that have been backed up. In addition, eachadditional computing device that is storing data files of the computingdevice may maintain a separate manifest of the data files that theparticular additional computing device is storing. In this way, the datafiles stored on the computing device may be restored in case ofcorruption or loss of one or more of the data files. In situations wherethe computing device is seeking to restore a lost or corrupted datafile, the computing device may utilize a local copy of the manifest todetermine the additional computing device and the storage location onthe additional computing device for the data file that is beingrestored. The computing device may then request the data file from theidentified additional computing device. In other situations, a differentcomputing device may seek to restore the data files of the computingdevice. For example, the computing device may be lost, stolen, or thememory of the computing device may be otherwise inaccessible. Thus, adifferent computing device may send requests to each of the additionalcomputing devices that store backup files for the computing device. Theadditional computing devices may access their locally stored manifestsand provide the backed up data files to the different computing device.Furthermore, each computing device that is part of a backup storagesystem may include a system manifest that indicates each respectivecomputing device and storage locations for each data file that is backedup. Accordingly, each computing device may determine a storage locationfor each data file that is backed up by the backup storage system duringa data file recovery process.

In an illustrative implementation, a computing device may access awireless local area network via a wireless access point located in aliving space of a user of the computing device. The computing device mayidentify other computing devices that are also connected to the wirelesslocal area network and determine computing devices that are candidatesto backup data for the computing device. For example, a laptop computingdevice may access a local area wireless network via a wireless accesspoint at the user's home and identify a desktop computing device, amobile phone, and a network attached storage (NAS) device that are alsoconnected to the local area wireless network via the wireless accesspoint. The laptop computing device may identify computing devices thatare connected to the wireless access point for a threshold amount oftime to determine computing devices that may also be associated with thehome environment of the user. In the current illustrative example, thecomputing device may determine that the desktop computing device and theNAS device are connected to the local area wireless network for athreshold amount of time and designate the desktop computing device andthe NAS device as being part of the home environment of the user. Thecomputing device may also determine that the mobile phone is not coupledto the local area wireless network for a threshold amount of time anddesignate the mobile phone as being a computing device that is a visitorto the home environment of the user.

After determining computing devices that are part of the homeenvironment of the user, the computing device may analyze features ofthe other computing devices that are part of the home environment of theuser and prioritize the other computing devices for the purpose ofbacking up data files of the computing device. In particular, the laptopcomputing device may determine a first fitness score for the NAS devicethat has a greater value than a second fitness score for the desktopcomputing device. The laptop computing device may also identify datafiles stored in the memory of the laptop computing device to be backedup on the NAS device and/or the desktop computing device. For example,the laptop computing device may identify photos and videos to be backedup by the NAS device and the desktop computing device. In anotherexample, the laptop computing device may identify data files stored inassociation with a particular folder, such as a “My Documents” folder,that are to be backed up by the NAS device and/or the desktop computingdevice. The laptop computing device may prioritize the data files to bebacked up and store the higher priority data files on the NAS devicehaving the fitness score with the greater value. When the availablememory space of the NAS runs out, the laptop computing device may backupthe remaining data files on the desktop computing device.

In cases where a data file of the laptop computing device becomes lostor corrupt, the laptop computing device may access a manifest stored bythe laptop computing device to determine whether a backup copy of thedata file is stored by the NAS device or the desktop computing device.The laptop computing device may then request the data file from the NASdevice or the desktop computing device. In other situations, the memoryof the laptop computing device may become inaccessible. For example, thelaptop computing device may have been lost, stolen, or damaged such thatthe data files stored on the memory of the laptop computing device areno longer accessible. In these situations, a different computing device,such as a new laptop computing device, may send requests to the desktopcomputing device and the NAS device and retrieve the data files of theoriginal laptop computing device that are backed up on the desktopcomputing device and the NAS device.

By identifying additional computing devices for backing up data filesthat are often accessible to a user of a computing device, the processesto backup data and recover data may be simplified. In particular, thebacking up of data files may be automated and the copies of the datafiles may be stored on multiple devices based on the suitability of thecomputing devices for storing backup data and based on the importance ofthe data files to a user. In this way, the data files that are mostimportant to the user are backed up on the devices that are mostsuitable for backing up data files and the involvement of the user indeciding when and where to back up data files may be minimized oreliminated in some situations. Additionally, a user does not have topurchase additional storage devices to backup data files, but mayutilize computing devices that are already included in a homeenvironment of the user.

FIG. 1 is a schematic diagram of an example environment 100 to backupdata files and recover data files according to some embodiments. Inparticular, the environment 100 includes a computing device 102 and awireless access point 104. The computing device 102 may connect to alocal area wireless network via the wireless access point 104. Thewireless access point 104 may connect with one or more additionalnetworks 106. In some cases, the wireless access point 104 may enablecomputing devices to access the Internet. The wireless access point 104may also enable computing device to access one or more enterprisenetworks. In addition, the wireless access point 104 may managecommunications according to a communications standard, such as an IEEE802.11 standard.

The environment 100 also includes a number of additional computingdevices, such as a mobile phone 108, a laptop computing device 110, adesktop computing device 112, and an external storage device 114. Insome implementations, the external storage device 114 may include anetwork access storage (NAS) device. The additional computing devices110, 112, 114 may also establish a connection with the wireless accesspoint 104. The computing device 102 and the additional computing devices110, 112, 114 may exchange communications via the wireless access point.In some cases, the mobile phone 108 and the computing device 102 mayexchange communications without using the wireless access point 104. Forexample, the computing device 102 and the mobile phone 108 may exchangecommunications using a different communications standard from thecommunications standard of the wireless access point 104. To illustrate,the computing device 102 and the mobile phone 108 may exchangecommunications using a Bluetooth communications standard. The computingdevice 102 may also exchange communications with a cloud storage service116 via the networks 106.

The computing device 102 includes a backup data system 118 and memory120. In some cases, the backup data system 118 may includecomputer-readable instructions that are stored by the memory 120. Thebackup data system 118 may also include hardware components, firmwarecomponents, or both to backup and restore data files of the computingdevice 102. In some cases, one or more of the additional computingdevices 108, 110, 112, 114 may also include a backup data system thatcorresponds with the backup data system 118. The cloud storage service116 may also be associated with a backup data system. The backup datasystems of the additional computing devices 108, 110, 112, 114 and/orthe cloud storage service 116 may include a common set of softwarecomponents, hardware components, firmware components, or combinationsthereof, that enable the exchange of information related to the backupand recovering of data files between the computing device 102, theadditional computing devices 108, 110, 112, 114, and/or the cloudstorage service 116. An additional computing device 108, 110, 112, 114,and/or the cloud storage service may not be candidates to backup datafiles of the computing device 102 in implementations where one of theadditional computing devices 108, 110, 112, 114, and/or the cloudstorage service 116 is not executing or otherwise associated with abackup data system.

The memory 120 may also store data files of the computing device 102. Inthe illustrative example of FIG. 1, the memory 120 stores a first datafile 122, a second data file 124, a third data file 126, a fourth datafile 128, a fifth data file 130, a sixth data file 132, and a seventhdata file 134. The backup data system 118 may analyze features of theadditional computing devices 108, 110, 112, 114 and the features of thecloud storage service 116 to determine a fitness of each of thecomputing devices 108, 110, 112, 114 and the cloud storage service 116to backup data files stored by the memory 120. Additionally, the backupdata system 118 may analyze features of the data files 122, 124, 126,128, 130, 132, 134 to prioritize the backing up of the data files 122,124, 126, 128, 130, 132, 134.

In particular implementations, the backup data system 118 may obtaininformation from the additional computing devices 108, 110, 112, 114 andthe cloud storage service 116 indicating a storage capacity of theadditional computing devices 108, 110, 112, 114 and the cloud storageservice 116. The storage capacity may indicate an amount of availablememory space to store data for a particular additional computing device.The storage capacity may be less than the total amount of memory spaceavailable to store data on a computing device. For example, the storagecapacity may indicate a portion of the amount of memory space availableto store data on a computing device. In some instances, the backup datasystem 118 may set a threshold amount of storage space to be used fordata backup on a particular computing device.

The backup data system 118 of the computing device 102 may also obtaininformation indicating an amount of time that the additional computingdevices are located in the environment 100. In some cases, the backupdata system 118 may obtain information indicating an amount of time thatan additional computing device 108, 110, 112, 114 is connected to alocal area wireless network via the wireless access point 104. In othercases, the backup data system 118 may obtain information indicating anamount of time that the additional computing is located at locationcoordinates associated with the environment 100. The locationcoordinates may include global positioning system (GPS) coordinates ofthe environment 100, latitude and longitude coordinates of theenvironment 100, or both.

In addition, the backup data system 118 of the computing device 102 mayobtain information from the additional computing devices 108, 110, 112,114 indicating other features of the additional computing devices. Inparticular implementations, the backup data system 118 may obtaininformation indicating a type of chassis of the additional computingdevices 108, 110, 112, 114. For example, the backup data system 118 mayobtain information from the additional computing device 108 indicatingthat the chassis of the additional computing device 108 is handheld. Inanother example, the backup data system 118 may obtain information fromthe additional computing device 110 indicating that the chassis of theadditional computing device 110 is laptop and the backup data system 118may obtain information from the additional computing device 112indicating that the chassis of the additional computing device 112 isdesktop, tower, or mini-tower. In an additional example, the backup datasystem 118 may obtain information from the additional computing device114 indicating that the chassis of the additional computing device 114is storage or server.

The backup data system 118 of the computing device 102 may also obtaininformation indicating an availability of the additional computingdevices 108, 110, 112, 114. For example, the backup data system 118 mayobtain information indicating that one or more additional computingdevices 108, 110, 112, and/or 114 may enter a low power mode. Toillustrate, after a threshold amount of time of inactivity, one or moreof the additional computing devices 108, 110, 112, and/or 114 may entera low power mode that requires input to exit the low power mode. In somecases, the backup data system 118 may obtain information from one ormore of the additional computing devices 108, 110, 112, 114 indicatingthat one or more of the additional computing devices 108, 110, 112, 114powers off after a threshold amount of time of inactivity.

Further, when a candidate backup storage device is in a low power mode,the backup data system 118 may monitor one or more system properties,such as thermal measurements, battery level, and the like, to determinean amount of involvement the candidate backup storage device is to havein backing up and restoring data files. In particular, the backup datasystem 118 may determine whether or not a computing device 110, 112, 114is associated with a state that would interfere with the backup and/orrestoration of data files. For example, a computing device 110, 112, 114that is in a low power mode due to a low battery level may have a lowerpriority for backing up data files due to the possibility that thecandidate backup storage device may not have enough power to completethe process of backing up data files from the computing device 102.

The backup data system 118 may also obtain information from theadditional computing devices 108, 110, 112, 114 indicating an age of thememory devices of the additional computing devices 108, 110, 112, 114.In some cases, the backup data system 118 may determine an age of a harddrive, a flash drive, or another data storage device of the additionalcomputing devices 108, 110, 112, 114 based on a manufacturing date ofthe additional computing device 108, 110, 112, 114, a BIOS manufacturingdate of the additional computing device 108, 110, 112, 114, an operatingsystem installation date of the additional computing device 108, 110,112, 114, or a combination thereof. Additionally, the backup data system118 may obtain information indicating a type of memory device of theadditional computing devices 108, 110, 112, 114, such as a spinning harddrive, a solid state drive, a flash driver, and the like. Further, thebackup data system 118 may obtain information indicating networkinterfaces utilized by the additional computing devices 108, 110, 112,114. In particular, the backup data system 118 may obtain informationfrom the additional computing devices 108, 110, 112, 114 indicating thatthe additional computing devices 108, 110, 112, 114 communicate viawired local area networks, wireless local area networks, wide areawireless networks, or combinations thereof. In particularimplementations, the backup data system 118 may obtain information fromthe additional computing devices 108, 110, 112, 114 to determine thewrite speed of memory devices of the additional computing devices 108,110, 112, 114.

The backup data system 118 may also obtain information from the cloudstorage service 116 regarding the storage of data to by the cloudstorage service 116. In some cases, the backup data system 118 mayobtain information indicating an amount of storage space available foran account of a user of the computing device 102 with the cloud storageservice 116. The backup data system 118 may utilize credentials of auser of the computing device 102 to access an account of the user withthe cloud storage service 116 and store copies of data files of thecomputing device 102 with the cloud storage service 116.

The backup data system 118 may analyze the information obtained from theadditional computing devices 108, 110, 112, 114, and the cloud storageservice 116 to determine a fitness score for each of the additionalcomputing devices 108, 110, 112, 114, and the cloud storage service 116.The fitness score may indicate a fitness of the additional computingdevices 108, 110, 112, 114, and the cloud storage service 116 to backupdata files of the computing device 102. In some cases, the fitness scoremay be based on weightings associated with information obtained from theadditional computing devices 108, 110, 112, 114, and the cloud storageservice 116. The weightings may indicate an amount of relativeimportance of the features of the additional computing devices 108, 110,112, 114, and the cloud storage service 116. For example, an amount ofavailable storage space may be associated with a first weighting, anamount of time located in the environment 100 may be associated with asecond weighting, and an accessibility of a computing device may beassociated with a third weighting. In particular implementations, theweightings for the features of the additional computing devices 108,110, 112, 114, and the cloud storage service 116 may be approximatelythe same, while in other situations, the weightings of the features maybe different. In an illustrative example, an average amount of time acomputing device 108, 110, 112, 114 is located in the environment 110may have a weighting with a greater value than a value of the weightingof the amount of storage space available. In another illustrativeexample, the weighting of the amount of storage space available may havea greater value than a type of chassis of a computing device.

In some implementations, the backup data system 118 may determine valuesfor the features of the additional computing devices 108, 110, 112, 114,and the cloud storage service 116 and determine the fitness score for aparticular candidate backup storage device based at least partly on thevalues of the features and the weightings for the features. In anexample, the backup data system 118 may determine a value of a firstfeature related to the amount of time spent in the environment 100 forthe computing device 108 and a value of the first feature for theadditional computing device 110. The backup data system 118 may alsodetermine a value of a second feature related to the amount of availablestorage space for the additional computing device 108 and a value of thesecond features for the additional computing device 110. The backup datasystem 118 may utilize the value of the first feature for the additionalcomputing device 108, the value of the first feature for the additionalcomputing device 110, the weighting of the first features, the value ofthe second feature for the additional computing device 108, the value ofthe second feature for the additional computing device 110, and theweighting of the second feature to determine fitness scores for theadditional computing device 108 and the additional computing device 110.In a particular example, the backup data system 118 may determine that afitness score for the additional computing device 110 has a greatervalue than a fitness score of the computing device 108 because theadditional computing device 110 is located in the environment 100 for agreater amount of time than the additional computing device 108 andbecause the additional computing device 110 has more available memoryspace to store copies of data files of the computing device 102 than theadditional computing device 108. Continuing with this example, thebackup data system 118 may determine that data files of the computingdevice 102 may be backed up on the additional computing device 110before data files of the computing device 102 are backed up on theadditional computing device 108 because the fitness score for theadditional computing device 110 has a greater value than the fitnessscore for the additional computing device 108.

Additionally, the backup data system 118 may also prioritize the backingup of data files stored in the memory 120 based at least partly onfeatures of the data files. For example, the backup data system 118 mayrank data files stored in the memory 120 based at least partly on astorage location of the data files. To illustrate, the backup datasystem 118 may determine a rank of a data file based at least partly onthe data file being stored in a particular folder, such as a MyDocuments folder or a My Photos folder. The backup data system 118 mayalso determine a rank of a data file based on an amount of memory spaceconsumed by the data file (e.g., 500 KB, 1 MB, etc.) and a type ofcontent associated with the data file (e.g., image content, videocontent, audio content, word processing document, portable documentformat (PDF) document, spreadsheet document, and the like). Further, thebackup data system 118 may determine a rank of a data file based on afrequency of use of the data file, an age of the data file, editingperformed with respect to the date file, user preferences, orcombinations thereof. In an illustrative example, the backup data system118 may rank the data files 122, 124, 126, 128, 130, 132, 134 anddetermine that the first data file 122, the third data file 126, and thesixth data file 132 are to be backed up before the other data files 124,128, 130, and 134 because the first data file 122, the third data file126, and the sixth data file 132 include video content that is stored ina My Videos folder.

The backup data system 118 may utilize the fitness scores for thecandidate backup storage devices and the ranking of the data filesstored in the memory 120 to determine the particular data files to bestored by corresponding candidate backup storage devices. For example,the backup data system 118 may determine that copies of data filesstored by the memory 120 with relatively higher rankings are to bebacked up before other data files having relatively lower rankings andare be stored by candidate backup storage devices having fitness scoreswith relatively greater values. The backup data system 118 may thenproduce copies of the data files to be backed up and send the copies ofthe data files to the corresponding backup storage devices. In theillustrative example of FIG. 1, the backup data system 118 may send datafor backup 136 to one or more backup storage devices. The data forbackup 136 may be sent to the backup storage devices via the wirelessaccess point 104. In particular, a first portion of the data for backup136 may be sent to the additional computing device 110 as first data forbackup 138. The first data for backup 138 may include copies of one ormore data files stored by the memory 120 that the backup data system 118determined to be backed up by the additional computing device 110 basedat least partly on a fitness score of the additional computing device110 and on rankings of the one or more data files included in the firstdata for backup 138. A second portion of the data for backup 136 may besent to the additional computing device 112 as second data for backup140. The second data for backup 140 may include copies of one or moredata files stored by the memory 120 that the backup data system 118determined to be backed up by the additional computing device 112 basedat least partly on a fitness score of the additional computing device112 and on rankings of the one or more data files included in the seconddata for backup 140. Additionally, a third portion of the data forbackup 136 may be sent to the additional computing device 114 as thirddata for backup 142. The third data for backup 142 may include copies ofone or more of the data files stored by the memory 120 that the backupdata system 118 determined to be backed up by the additional computingdevice 114 based at least partly on a fitness score of the additionalcomputing device 114 and on rankings of the one or more data filesincluded in the third data for backup 142.

In some implementations, at least a portion of the data for backup 136may be sent to the cloud storage service 116. Also, data files that havebeen backed up on one or more of the additional computing devices 108,110, 112, 114 may be moved to the cloud storage service 116 undercertain conditions. For example, after a threshold period of time beingstored on one of the additional computing devices 108, 110, 112, 114,one or more data files may be backed up by the cloud storage service116. In another example, backup copies of data files that have not beenaccessed by the computing device 102 for a threshold period of time maybe backed up by the cloud storage service 116.

Although the backup and recovery of data has been described with respectto the computing device 102 of FIG. 1, other computing device includedin the environment 100 may also perform similar operations to backup andrecover data files. For example, the additional computing devices 108,110, 112, 114 may identify computing devices on which to store backupcopies of data files. The additional computing devices 108, 110, 112,114 may also prioritize the data files stored in the respective memoriesof the additional computing devices 108, 110, 112, 114 to be backed up.

FIG. 2 is a diagram illustrating an example process 200 to backup dataaccording to some embodiments. In some implementations, the operationsof the process 200 may be performed by a backup data system, such as thebackup data system 118 of FIG. 1. At 202, the process 200 includesprioritizing computing devices on which to store backup data. Theprioritization of the computing devices may be based at least partly onan analysis of candidate backup storage device features 204. In theillustrative example of FIG. 2, the candidate backup storage devicesinclude the laptop computing device 110, the desktop computing device112, the NAS device 114, and the cloud storage service 116.

The candidate backup storage device features 204 may include memoryfeatures 206. The memory features 206 may include an amount of availablememory space for storing data. The memory features 206 may also includea type of memory storage device included in a candidate backup storagedevice. For example, a candidate backup storage device may include aspinning hard drive. In another example, a candidate backup storagedevice may include a solid state drive. In an additional example, acandidate backup storage device may include a flash memory device. Thememory features 206 may indicate a fitness of a candidate backup storagedevice for storing backup data files. To illustrate, a candidate backupstorage device having a greater amount of available memory space mayhave a greater fitness for storing backup files than a candidate backupstorage device having less available memory space. In anotherillustration, certain types of memory devices may be preferable forstoring backup copies of data files. In some cases, a candidate backupstorage device having a solid state drive may be designated as having agreater fitness for storing backup copies of data files than a spinninghard drive. Also, candidate backup storage devices having memory deviceswith faster write speeds may be designated as having a greater fitnessfor storing backup copies of data files than candidate backup storagedevices having memory devices with slower write speeds.

The candidate backup storage features 204 may also include chassisfeatures 208. The chassis features 208 may indicate a type of chassis ofa candidate backup storage device. For example, a candidate backupstorage device may have a laptop chassis. In another example, acandidate backup storage device may have a desktop chassis. In anadditional example, a candidate backup storage device may have a towerchassis or a mini-tower chassis. In further examples, a candidate backupstorage device may have a server chassis, a storage chassis, a portablechassis, or a handheld chassis. In some cases, particular chassis typesmay have a greater fitness for storing backup copies of data files thanother types of chassis. To illustrate, a candidate backup storage devicehaving a tower chassis or a storage chassis may have a greater fitnessfor storing backup copies of data files than a candidate backup storagedevice having a laptop chassis or a handheld chassis.

In addition, the candidate backup storage device features 204 mayinclude network features 210. The network features 210 may indicatetypes of communication interfaces included in candidate backup storagedevices. The types of communication interfaces included in a candidatebackup storage device may indicate the types of networks that thecandidate backup storage device may access. In some cases, the networkfeatures 210 may indicate that a candidate backup storage device mayinclude a network interface for communicating via a wireless local areanetwork. For example, the network features 210 may indicate that acandidate backup storage device may include a network interface forcommunicating via networks using an IEEE 802.11 communications standard.In another example, the network features 210 may indicate that acandidate backup storage device may include a network interface forcommunicating via networks using a Bluetooth communications standard. Inan additional example, the network features 210 may indicate that acandidate backup storage device may include a network interface forcommunicating via wide area wireless networks. To illustrate, thenetwork features 210 may indicate that a candidate backup storage devicemay include a network interface for communicating via a Global Systemfor Mobile Communications (GSM) network, a code division multiple access(CDMA) network, a long-term evolution (LTE) network, an Enhanced Datarates for GSM Evolution (EDGE) network, a Universal MobileTelecommunications System (UMTS) network, a High Speed Packet Access(HSPA) network, or combinations thereof. In still other examples, thenetwork features 210 may indicate that a candidate backup storage devicemay include a network interface for communicating via wired networks,such as a wired local area network. In some implementations, one or moretypes of network features 210 may indicate a greater fitness for storingbackup copies of data files than other network features 210. In anillustrative example, a candidate backup storage device having a networkinterface for communicating according to an IEEE 802.11 communicationsstandard may have a greater fitness for storing backup copies of datafiles than a candidate backup storage device having a network interfacefor communicating according to a Bluetooth communications standard.

Further, the candidate backup storage device features 204 may includepower features 212. The power features 212 may indicate that a candidatebackup storage device enters a low power mode after being inactive for athreshold amount of time. In addition, the power features 212 mayindicate that a candidate backup storage device powers off after beinginactive for a threshold amount of time. The power features 212 may alsoindicate that a candidate backup storage device may receive input tocause the candidate backup storage device to exit a low power mode or topower on. In some cases, the power features 212 may indicate that acandidate backup storage device may receive one or more signals fromanother computing device to exit a low power mode or to power on. Inother situations, the power features 212 may indicate that a candidatebackup storage device may receive input from a user of the candidatebackup storage device to exit a low power mode or to power on. Inparticular implementations, some of the power features 212 may indicatea greater fitness for storing backup copies of data files than otherpower features 212. In an illustrative example, a candidate backupstorage device that may exit a low power mode by signals received fromanother computing device may have a greater fitness for storing backupcopies of data file than a candidate backup storage device that exits alow power mode in response to input from a user, such as receiving anidentifier and/or password of the user.

The candidate backup storage device features 204 may include locationfeatures 214. The location features 214 may indicate an amount of timethat a candidate backup storage device is located in a particularlocation. The amount of time that a candidate backup storage device islocated in a location may be based at least partly on an amount of timethat the candidate backup storage device is connected to a wirelesslocal area network via a wireless access point. In addition, the amountof time that a candidate backup storage device is located in a locationmay be based at least partly on an amount of time that the candidatebackup storage device is located at or near particular geographiccoordinates, such as GPS coordinates or latitude and longitudecoordinates. An amount of time that a candidate backup storage device islocated in one or more locations may indicate a fitness for storingbackup copies of data files. For example, a candidate backup storagedevice may have a greater fitness for storing backup copies of datafiles of a computing device when the candidate backup storage device andthe computing device are located in a same or similar location for athreshold amount of time. To illustrate, a candidate backup storagedevice that is located in a particular location for at least 50% of thetime that the computing device is located in the particular location mayhave a greater fitness to store backup copies of data files of thecomputing device than a candidate backup storage device that is locatedin the particular location less than 50% of the time that the computingdevice is located in the particular location.

In particular implementations, a particular location may be designatedas a trusted environment for a computing device and the fitness forstoring backup copies of data files of the computing device may be basedat least partly on an amount of time that the candidate backup storagedevice is located in the trusted environment. In an illustrativeexample, a home environment corresponding to a residence of a user maybe designated for a computing device. The amount of time that acandidate backup storage device is located in the home environment ofthe user may be used to determine a fitness for storing backup copies ofdata files of the computing device.

To prioritize the computing devices that are candidate backup storagedevices, the candidate backup storage device features 204 may each beassociated with a weight that indicates a relative importance of aparticular candidate backup storage device feature 204 in determining afitness for storing backup copies of data files for a computing device.In some cases, at least two of the candidate backup storage devicefeatures 204 may have the same weighting. In addition, at least two ofthe candidate backup storage device features 204 may have a differentweighting. In particular implementations, the weighting of the candidatebackup storage device features 204 may be based at least partly onpreferences of a user of the computing device associated with the datafile being backed up. Also, the weighting of the candidate backupstorage device features 204 may be designated by an entity associatedwith producing and/or distributing the backup data system 118 of FIG. 1.Further, the weighting of the candidate backup storage device features204 may be determined over time based on input received from a user ofthe computing device associated with the data files being backed up. Forexample, a user of a computing device may provide explicit input to makecopies of data files and store the copies of the data files in aparticular candidate backup storage device. Continuing with thisexample, a system, such as the backup data system 118 may analyze thebackup storage devices designated by the user and determine thatfeatures of those backup storage devices have a greater weighting thanfeatures of candidate backup storage devices that are not designated bythe user to store copies of data files of the computing device.

The prioritizing of additional computing devices to store backup datafor a computing device may be based on fitness scores calculated foreach candidate backup storage device based at least partly on thecandidate backup storage device features 204 and the weighting for thecandidate backup storage device features 204 of each particularcandidate backup storage device. The candidate backup storage devicesmay be ranked according to the fitness scores with the candidate backupstorage device having the fitness score with the greatest value beingdesignated as having the greatest amount of fitness to store backupcopies of data files of a computing device.

At 216, the process 200 also includes prioritizing data files of acomputing device to be backed up. Prioritizing the data files of thecomputing device to be backed up may be based at least partly on datafile properties 218. The data file properties 218 may indicate orinclude information about certain characteristics of data files. Forexample, the data file properties 218 may include file type 220. Thefile type 220 may indicate content of a data file. The file type 220 mayalso indicate a type of formatting applied to the data of a data file.The file type 220 may indicate that a data file includes image content,such as photographs. The file type 220 may also indicate that a datafile includes audio content, video content of both. In addition, thefile type 220 may indicate that a data file includes a word processingdocument or a spreadsheet document. Further, the file type 220 mayindicate that a data file includes a PDF document. In some cases, thefile type 220 may indicate that a data file is an executable data file.In particular implementations, the file type 220 may be based at leastpartly on a file extension of a data file. Some of the file types 220may have a higher priority than other file types 220. To illustrate,data files that include photos may have a higher priority than datafiles that are executables.

The data file properties 218 may also include file size 222. The filesize 222 may indicate an amount of memory space consumed by a particulardata file. In some examples, the file size 222 may be expressed as anumber of bytes consumed by a data file. In particular implementations,data files having particular file sizes 222 may have a higher prioritythan other data files. In an illustrative example, data files having afile size that is greater than a threshold file size may have a higherpriority than other data files. In another illustrative example, somedata files may be too big for storing backup copies. Thus, data fileshaving a file size that is less than a threshold file size may berelatively more important than other data files.

The data file properties 218 may also include usage history 224. Theusage history 224 may indicate times that a data file was accessedand/or modified. For example, the usage history 224 may indicate anumber of times that a data file was accessed over a specified period oftime. In some cases, the usage history 224 of a data file may indicate anumber of times that a data file was modified over a specified period oftime. In some implementations, data files that are accessed and/ormodified more frequently may have a higher priority than data files thatare accessed less frequently. Additionally, data files that have notbeen accessed and/or modified for a threshold period of time may have alower priority than data files that have been accessed more recently. Inan illustrative example, a data file that was installed when a computingdevice was initially setup, but has not been accessed since, may have alower priority than a data file that was accessed multiple times in thepast three months.

In addition, the data file properties 218 may include file source 226.The file source 226 may indicate an application that produced the datafile, such as a word processing application or a photo editingapplication. The application that produced the data file may beexecuting on a computing device from which the data files to be backedup are initially stored. The file source 226 may also indicate alocation from which the data file originated. For example, the filesource 226 may indicate a website from which the data file was obtained.In another example, the file source 226 may indicate a computing devicefrom which the data file was obtained. In an illustrative example, thefile source 226 may indicate that a data file was obtained from a mobilephone or a laptop computing device. In some cases, the data fileproperties 218 may indicate that the file source 226 includes acomputing device that is associated with a particular individual. Thefile source 226 may be used to determine a priority for a data file. Toillustrate, a data file that was obtained from a publicly accessiblewebsite may have a lower priority than a data file obtained from amobile phone of an individual because a data file accessible from apublic website may be easier to recover than a data file from a mobilephone of an individual.

Further, the data file properties may include storage location 228. Thestorage location 228 may indicate a path of a data file that may be usedto access information associated with the data file. In someimplementations, the path of the data file may indicate one or moredirectories of the data file, one or more folders of the data file, orboth. In an illustrative example, a storage location 228 of a data filemay include a My Documents folder that stores documents created by anindividual or a My Videos Folder that stores videos created by anindividual. In another illustrative example, the storage location 228 ofa data file may include a Desktop folder that includes data files thatare commonly used by a user of a computing device and/or data files thatare relatively important for the user. In an additional illustrativeexample, the storage location 228 may include a Program Files folderthat stores executable data files, libraries, scripts, and the like, forsoftware being executed on a computing device. The storage location 228may include a folder that is created by a user of a computing device. Inother cases, the storage location may include a folder that is createdby software executing on the computing device. In additional situations,the storage location may include a default folder that was producedduring an initialization process for a computing device. The storagelocation 228 of a data file may be used to determine a priority for thedata file. To illustrate, a data file being stored in a My Documentsfolder of a computing device may have a higher priority than a data filestored in a Program Files folder because a data file of the My Documentsfolder is more likely to have been created by a user and be harder torestore than a data file of a Program Files folder.

The data file properties 218 may also include user preferences 230. Theuser preferences 230 may indicate preferences for a user of a computingdevice in relation to data files that are important to the user. In someimplementations, the user preferences 230 may indicate a degree ofimportance of properties of a data file that are important to the user.For example, a user may assign a weighting to one or more of the datafile properties 218 or the user may modify a default weightingassociated with one or more of the data file properties 218. In anillustrative example, the user preferences 230 may indicate one or morestorage locations that include data files that are important to a user,such as a My Documents folder or a Desktop folder. In anotherillustrative example, the user preferences 230 may indicate one or morefile sources that include data files that are important to a user, suchas a mobile device of the user. In an additional illustrative example,the user preferences 230 may indicate one or more keywords included in afile name that indicate data files that are important to the user.

In an illustrative example, data files may be prioritized by determininga priority score for each of a number of data files stored by acomputing device. The priority scores for each data file may be used todetermine an order in which the respective data files are to be backedup. For example, a first set of data files having priority scores withgreater values than a second set of data files may be backed up beforethe second set of data files. Also, priority scores for data files maybe used to determine a backup storage device for the data files. Toillustrate, data files having a particular range of priority scoresand/or having priority scores above a threshold amount may be backed upon particular candidate backup storage devices. In some cases, thecandidate backup storage devices may be designated to backup data fileshaving certain priority scores.

The priority score for a data file may be determined based on analyzingone or more of the data file properties 218 for the data file. In somecases, a value may be assigned to one or more of the data fileproperties 218 for the data file. For example, a photo obtained from amobile device of a user of the computing device may be assigned a valuefor the file type 220 being a photo, a value for the file size 222 beingless than a maximum file size threshold, a value for the usage history224 indicating that the file has been accessed 10 times in the past 3months, a value for the file source 226 being the mobile device of theuser, and a value for the storage location 228 being a My Photos folderof the computing device. A weight may also be assigned to one or more ofthe data file properties 218 for the data file. To illustrate, the filetype 220 may be associated with a first weight, the file size 222 may beassociated with a second weighting, the usage history 224 may beassociated with a third weighting, the file source 226 may be associatedwith a fourth weighting, and the storage location 228 may be associatedwith a fourth weighting. In a particular example, the weighting of thefile type 220 and the weighting of the storage location 228 may havegreater values than the weighting of the file size 222, the weighting ofthe usage history 224, and the weighting of the file source 226.

At 232, the process 200 also includes allocating data files to be backedup on computing devices based at least partly on the priority associatedwith the computing devices and the priority of the data files beingbacked up. In some implementations, priority scores of data files andfitness scores of computing devices may be used to identify theparticular data files to be backed up on corresponding computingdevices. In some cases, the data files having priority scores withrelatively greater values may be backed up on computing devices havingrelatively greater fitness scores. In a particular example, data fileshaving priority scores greater than a threshold amount may be backed upon a computing device having a fitness score greater than a thresholdamount. In this way, the computing devices having the greatest fitnessfor storing backup copies of data files as determined by a backup datasystem are associated with data files that are relatively more importantfor a user, as determined by the backup data system.

In the illustrative example of FIG. 2, a backup data system maydetermine fitness scores for the laptop computing device 110, thedesktop computing device 112, the NAS device 114, and the cloud storageservice 116. Based on the fitness scores, the backup data system mayrank the computing devices in a particular order with the NAS device 114having the highest rank, followed by the laptop computing device 110,the desktop computing device 112, and the cloud storage service 116. Inthis illustrative example, the backup data system may determine that thefitness scores for the candidate backup storage devices decreased fromgreatest to least starting with the NAS device 114 and ending with thecloud storage service 116.

Additionally, the backup data system may determine priority scores forthe data files 122, 124, 126, 128, 130, 132, 134 and store backup copiesof the respective data files at particular backup storage devices basedon the priority scores for the data files 122, 124, 126, 128, 130, 132,134 and the fitness scores of the candidate backup storage devices 110,112, 114, 116. In the illustrative example of FIG. 2, a backup copy ofthe first data file 122 may be stored by the NAS device 114, a backupcopy of the third data file 126 may be stored by the NAS device 114, anda backup copy of the sixth data file 132 may be stored by the NAS device114. Also, a backup copy of the fifth data file 130 may be stored by thelaptop computing device 110 and a backup copy of the seventh data file134 may be stored by the laptop computing device 110. In addition, abackup copy of the second data file 124 may be stored by the desktopcomputing device 112 and a backup copy of the fourth data file 128 maybe stored by the cloud storage service 116. In a particularimplementation, the backup data system may determine that the first datafile 122, the third data file 126, and the sixth data file 132 havepriority scores that are greater than the priority scores of the datafiles 124, 128, 130, 132 and determine that backup copies of the datafiles 122, 126, 132 are to be stored on the candidate backup storagedevice having the highest fitness score, the NAS device 114. Further,the backup data system may determine that the fifth data file 130 andthe seventh data file 134 have priority scores that are greater than thepriority scores of the data files 124, 128 and determine that backupcopies of the data files 130, 134 are to be stored on the candidatebackup storage device having the second highest fitness score, thelaptop computing device 110. The backup data system may also determinethat the second data file 124 has a greater priority score than thefourth data file 128 and that a backup copy of the second data file 124is to be stored by the candidate backup storage device having the thirdhighest fitness score, the desktop computing device 112 and that abackup copy of the fourth data file 128 is to be stored by candidatebackup storage device having the lowest fitness score, the cloud storageservice 116.

FIG. 3 is a diagram illustrating an example environment 300 to recoverdata according to some embodiments. The environment 300 may include thecomputing device 102 having the backup data system 118 and the memory120 storing data files. Additionally, the environment 300 may includethe laptop computing device 110, the desktop computing device 112, theNAS device 114, and the cloud storage service 116. Also in theillustrative example of FIG. 3, the NAS device 114 may store backupcopies of the first data file 122, the third data file 128, and thesixth data file 132; the laptop computing device 110 may store backupcopies of the fifth data file 130 and the seventh data file 134; thedesktop computing device 112 may store a backup copy of the second datafile 124; and the cloud storage service 116 may store a backup copy ofthe fourth data file 128.

The computing devices 110, 112, 114, 116 may produce respectivemanifests that indicate the data files of the computing device 102 beingbacked up. For example, the NAS device 114 may produce a manifest 302indicating that the NAS device 114 stores backup copies of the firstdata file 122, the third data file 126, and the sixth data file 132.Also, the laptop computing device 110 may produce a manifest 304indicating that the laptop computing device 110 stores backup copies ofthe fifth data file 130 and the seventh data file 134. In addition, thedesktop computing device 112 may produce a manifest 306 indicating thatthe desktop computing device 112 stores a backup copy of the second datafile 124. Further, the cloud storage service 116 may produce a manifest308 indicating that the cloud storage service 116 stores a backup copyof the fourth data file 128. The manifests 302, 304, 306, 308 may becomputer-readable data files that may be used to determine the datafiles of the computing device 102 that are backed up on a particularbackup storage device 110, 112, 114, 116. The manifests 302, 304, 306,308, in some scenarios, may be text documents indicating the data filesof the computing device 102 that are backed up on a particular backupstorage device 110, 112, 114, 116.

In some implementations, the backup data system 118 may access themanifests of computing devices storing backup copies of the data filesstored by the memory 120 to restore data files that may no longer beaccessible to the computing device 102. In some cases, one or more ofthe data files stored by the memory 120 may be corrupted and may nolonger be readable by the computing device 102. In other situations, oneor more of the data files stored by the memory 120 may have been deletedfrom the memory 120 and may no longer be accessible to the computingdevice 102. In the illustrative example of FIG. 3, the third data file126 and the fifth data tile 130 may no longer be accessible to thecomputing device 102.

The computing device 102 may send a request for data 310 to one or moreof the computing devices 110, 112, 114, 116 to obtain the data filesthat are no longer accessible to the computing device 102. In somecases, the computing device 102 may send the request for data 310 toeach of the computing devices 110, 112, 114, 116. In other cases, thecomputing device 102 may send the request for data 310 to the particularcomputing devices storing the backup copies of the inaccessible datafiles. For example, the memory 120 may store a separate master manifest312 that indicates each of the computing devices that are storing backupcopies of the data files stored by the memory 120. In these situations,the backup data system 118 may access the master manifest 312 todetermine that the third data file 126 is stored by the NAS device 114and the fifth data file 130 is stored by the laptop computing device110. In the illustrative example of FIG. 3, the backup data system 118may send the request for data 310 to the NAS device 114 to obtain thethird data file 126 and send the request for data 310 to the laptopcomputing device 110 to obtain the fifth data file 130.

In response to receiving the request for data 310, one or more of thecomputing devices 110, 112, 114, 116 may access a respective manifest302, 304, 306, 308 to determine whether a backup copy of the requesteddata is stored by the computing device. In scenarios in which thecomputing device is storing a backup copy of the requested data file,the computing device may send data to be restored 314 to the computingdevice 102. The data to be restored 314 may include a copy of a datafile requested by the computing device 102. For example, the NAS device114 may receive the request for data 310 from the computing device 102.The NAS device 114 may access the first manifest 302 to determinewhether the NAS device 114 is storing one or more of the data filesindicated by the request for data 310. In the illustrative example ofFIG. 3, the request for data 310 may include a request obtain the thirddata file 126, and the NAS device 114 may access the first manifest 302to determine that the NAS device 114 is storing a backup copy of thethird data file 126. The NAS device 114 may then send the data to berestored 314 to the computing device 102, where the data to be restored314 includes a copy of the third data file 126. The computing device 102may utilize the data to be restored 314 to save the third data file 126to the memory 120. In another example, the laptop computing device 110may receive the request for data 310 from the computing device 102 andthe laptop computing device 110 may access the second manifest 304 todetermine whether the laptop computing device 110 is storing one or moreof the data files indicated by the request for data 310. In theillustrative example of FIG. 3, the request for data 310 may include arequest obtain the fifth data file 130, and the laptop computing device110 may access the second manifest 304 to determine that the laptopcomputing device 110 is storing a backup copy of the fifth data file130. The laptop computing device 110 may then send the data to berestored 314 to the computing device 102, where the data to be restored314 includes a copy of the fifth data file 130. The computing device 102may utilize the data to be restored 314 to save the fifth data file 130to the memory 120.

The computing devices 108, 110, 112 and the cloud storage service 116may also store, or otherwise have direct access to the master manifest312. In addition to storing the storage locations of the data filesstored by the computing device 102, the master manifest 312 may alsoinclude the storage locations of data files stored by each respectivecomputing device 108, 110, 112 and the cloud storage service 116. Inthis way, should the data files of one or more of the computing devices108, 110, 112 or the cloud storage service 116 become inaccessible, oneor more of the remaining computing devices 108, 110, 112 and/or thecloud storage service 116 may utilize the master manifest 312 to restorethe data files of the inaccessible computing device(s).

FIG. 4 is a block diagram illustrating an example system 400 to backupand restore data according to some embodiments. The system 400 includesa computing device 402 that may be used to backup data files and recoverdata files. The computing device 402 may include a laptop computingdevice, a tablet computing device, a mobile communications device (e.g.,a mobile phone), a wearable computing device (e.g., watch, glasses,fitness tracking device, jewelry), a desktop computing device, aportable gaming device, combinations thereof, and the like. Thecomputing device 402 may be operated by a user. The computing device 402may include one or network interfaces 404 to communicate with othercomputing devices via one or more networks 406. The one or more networks406 may include one or more of the Internet, a cable network, asatellite network, a wide area wireless communication network, a wiredlocal area network, a wireless local area network, or a public switchedtelephone network (PSTN).

In particular embodiments, the computing device 402 may communicate overthe one or more networks 406 with one or more additional computingdevices 408. The one or more additional computing devices 408 mayinclude computing devices that store backup copies of data files storedby the computing device 402. In addition, the one or more additionalcomputing devices 408 may include candidate backup storage devices thatmay be evaluated by the computing device 402 to store backup copies ofdata files stored by the computing device 402. The one or moreadditional computing devices 408 may include a laptop computing device,a tablet computing device, a mobile communications device, a wearablecomputing device, a desktop computing device, a gaming console, anexternal storage device, a computing device of a cloud storage service,combinations thereof, and the like.

The computing device 402 may include one or more processors, such asprocessor 410. The one or more processors 410 may include at least onehardware processor, such as a microprocessor. In some cases, the one ormore processors 410 may include a central processing unit (CPU), agraphics processing unit (GPU), or both a CPU and GPU, or otherprocessing units. Additionally, the one or more processors 410 mayinclude a local memory that may store program modules, program data,and/or one or more operating systems.

In addition, the computing device 402 may include one or morecomputer-readable storage media, such as computer-readable storage media412. The computer-readable storage media 412 may include volatile andnonvolatile memory and/or removable and non-removable media implementedin any type of technology for storage of information, such ascomputer-readable instructions, data structures, program modules, orother data. Such computer-readable storage media 412 may include, but isnot limited to, RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, solid state storage,magnetic disk storage, RAID storage systems, storage arrays, networkattached storage, storage area networks, cloud storage, removablestorage media, or any other medium that can be used to store the desiredinformation and that can be accessed by a computing device. Depending onthe configuration of the computing device 402, the computer-readablestorage media 412 may be a type of tangible computer-readable storagemedia and may be a non-transitory storage media.

The computer-readable storage media 412 may be used to store any numberof functional components that are executable by the one or moreprocessors 410. In many implementations, these functional componentscomprise instructions or programs that are executable by the one or moreprocessors 410 and that, when executed, implement operational logic forperforming the operations attributed to the computing device 402.Functional components of the computing device 402 that may be executedon the one or more processors 410 for implementing the various functionsand features related to generating prioritized views of messages, asdescribed herein, include a computing device discovery module 414, acomputing device ranking module 416, a data file ranking module 418, adata file transfer module 420, a manifest module 422, and a data filerecovery module 424 In some implementations, one or more of the modules414, 416, 418, 420, 422, 424, may be included in the backup data system118 of FIG. 1 and FIG. 3.

The computing device 402 may also include, or is coupled to, a datastore 426 that may include, but is not limited to, RAM, ROM, EEPROM,flash memory, one or more hard disks, solid state drives, optical memory(e.g. CD, DVD), or other non-transient memory technologies. The datastore 426 may maintain information that is utilized by the computingdevice 402 to perform operations related to the backup and recovery ofdata. For example, the data store 426 may store data files 428. The datastore 426 may also store backup data files 428. In addition, the datastore 428 may store one or more manifests 432. In some scenarios, thecomputer-readable storage media 406 and the data store 426 may beimplemented using the same physical memory device(s). In otherscenarios, at least a portion of the computer-readable storage media 406and at least a portion of the data store 426 may be implemented using adifferent physical memory device(s).

In particular, the data files 428 may include data that is accessible byone or more applications executing on the computing device 402. The datafiles 428 may include output of one or more applications executing onthe computing device 402. The data files 428 may be used as input to oneor more applications executing on the computing device 402. In somecases, the data files 428 may be produced by a word processingapplication, a spreadsheet application, a messaging application, aportable document formatting application, a social networkingapplication, a media content application (e.g., photo application, videoapplication, audio application), an editing application, combinationsthereof, and the like. The data files 428 may be accessed via file pathsthat indicate the storage locations of the data files 428. The backupdata files 430 may include copies of data files produced by anapplication executing on another computing device, such as one or moreof the additional computing devices 408.

The one or more manifests 432 may include data indicating the computingdevices associated with the backup data files 430. For example, amanifest 432 associated with one of the additional computing device 408may indicate data files of the additional computing device 408 that arebacked up by the computing device 402. The one or more manifests 432 mayalso include a manifest 432 that indicates one or more of the additionalcomputing devices 408 that are storing backup copies of the data files428. In some implementations, the manifest 432 indicating computingdevices storing backup copies of the data files 428 may be referred toherein as a “master manifest.” In an illustrative example, the mastermanifest for the computing device 402 may indicate that backup copies atleast a first portion of the data files 428 are stored by a firstadditional computing device 408 and that backup copies of at least asecond portion of the data files 428 are stored by a second additionalcomputing device 408. Furthermore, the one or more manifests 432 mayinclude a system manifest that indicates the data files that are backedup on each backup storage device of a group of backup storage devices.

The computing device discovery module 414 may include computer-readableinstructions that are executable by the processor 410 to identifycomputing devices that may be candidate backup storage devices forstoring backup copies of the data files 428. The computing devicediscovery module 414 may identify computing devices 414 that are incommunication with the computing device 402 via the one or more networks406. In some cases, the computing device discovery module 414 mayutilize the one or more network interfaces 404 to identify computingdevices that are in communication with the computing device 402. Forexample, the computing device discovery module 414 may utilize thenetwork interfaces 404 to identify one or more of the additionalcomputing devices 408 that are transmitting communications over a localarea wireless network using a particular communications standard. Toillustrate, the computing device discovery module 414 may identify atleast one additional computing device 408 that is communicating using aBluetooth communications standard.

The computing device discovery module 414 may also communicate with anaccess point of one or more of the networks 404. In someimplementations, the computing device discovery module 414 maycommunicate with an access point of a local area wireless network. Thecomputing device discovery module 414 may communicate with the accesspoint of the local area wireless network to identify other computingdevices in communication with the access point. In variousimplementations, the computing device discovery module 414 maycommunicate with one or more of the additional computing devices 408 viathe access point of the local area wireless network.

In particular implementations, the computing device discovery network414 may identify computing devices to store backup copies of the datafiles 428. In some cases, the computing devices that store backup copiesof the data files 428 may be associated with a particular network. Forexample, the computing devices that store backup copies of the datafiles 428 may communicate via a local area wireless network thatcorresponds to a particular wireless access point. The particularwireless access point may be located in a location that is associatedwith a user of the computing device 402. To illustrate, the particularwireless access point may be located in a residence of the user of thecomputing device 402. In another illustrative example, the particularwireless access point may be located in an enterprise associated withthe user of the computing device 402. In additional illustrativeexamples, the particular wireless access point may be located in anotherlocation that is trusted by the user of the computing device 402. Infurther illustrative examples, the computing devices that store backupcopies of the data files 428 may communicate via a particular wiredlocal area network, such as an enterprise network or a wired homenetwork, that is designated as a trusted environment associated with thecomputing device 402. Computing devices located in a trusted environmentrelated to the computing device 402 may be candidate backup storagedevices to store copies of the data files 428.

In various implementations, the computing device discovery module 414may identify a wireless access point that is associated with a trustedenvironment of a user of the computing device 402 based at least partlyon amount of time that the computing device 402 is connected to a localarea wireless network. That is, the computing device discovery module414 may determine an amount of time that the computing device 402 iscoupled to one or more local area wireless networks. For example, thecomputing device discovery module 414 may determine an amount of timethat the computing device 402 is connected to a local area wirelessnetwork that has a particular SSID. In an illustrative example, thecomputing device discovery module 414 may determine that the computingdevice 402 is located in a trusted environment of a user of thecomputing device 402 based at least partly on determining that thecomputing device 402 has been connected to a local area wireless networkfor a threshold period of time.

In some cases, the computing device discovery module 414 may alsodetermine that the computing device 402 is located in a geographiclocation and determine that the geographic location is associated with atrusted environment of a user of the computing device 402. Toillustrate, the computing device discovery module 414 may determine thatthe computing device 402 is located at geographic coordinatescorresponding to an address associated with a residence of the user ofthe computing device 402. In another illustrative example, the computingdevice discovery module 414 may determine that the computing device 402is located at geographic coordinates corresponding to an addressassociated with an enterprise of the user of the computing device 402.

Further, the computing device discovery module 414 may determine timesof day that the computing device 402 is connected to one or more localarea wireless networks to identify a local area wireless network that islocated in a trusted environment of a user of the computing device 402.In some implementations, the computing device discovery module 414 maydetermine that the computing device 402 is located in a trustedenvironment based at least partly on the computing device 402 beingconnected to a local area wireless network during non-work hours of theuser of the computing device 402, such as during the evening hours ornighttime hours. The computing device discovery module 414 may alsoidentify a trusted environment of a user of the computing device 402based at least partly on other computing devices connected to a localarea wireless network. For example, the computing device discoverymodule 414 may determine that one or more other computing devicesassociated with the user of the computing device 402 (e.g., a mobilephone of the user, a desktop computing device of the user, etc.) arealso connected to a particular local area wireless network and determinethat the computing device 402 is located in a trusted environment basedat least partly on the one or more other computing devices of the userbeing coupled to the same local area wireless network as the computingdevice 402.

The computing device discovery module 414 may also obtain informationfrom the computing devices located in a trusted environment of thecomputing device 402. For example, the computing device discovery module414 may obtain information regarding an additional computing device 408connected to a particular local area wireless network indicating thatthe additional computing device 408 has been connected to the particularlocal area wireless network for a period of time. In another example,the computing device discovery module 414 may obtain informationindicating a history of connection to the particular local area wirelessnetwork by an additional computing device 408. In some scenarios, thecomputing device discovery module 414 may obtain the informationregarding the connection of an additional computing device 408 to aparticular local area wireless network from the additional computingdevice 408. In other situations, the computing device discovery module414 may obtain information regarding the connection of an additionalcomputing device 408 to a particular local area wireless network from awireless access point associated with the local area wireless network.

The computing device discovery module 414 may also obtain informationabout other features of computing devices located in a trustedenvironment of a user of the computing device 402. For example, thecomputing device discovery module 414 may obtain information related tomemory features of computing devices located in a trusted environment ofa user of the computing device 402. To illustrate, the computing devicediscovery module 414 may obtain information regarding one or moreadditional computing devices 408 indicating a technology of memorydevices of the one or more additional computing devices 408, an age ofmemory devices of the one or more additional computing devices 408, orboth. In some implementations, the computing device discovery module 414may conduct a performance analysis to determine the write speed ofmemory devices of the one or more additional computing devices 408. Inparticular, the computing device discovery module 414 may obtaininformation regarding an additional computing device 408 indicating aBasic Input/Output System (BIOS) manufacturing date that may be used todetermine an age of a memory device. The computing device discoverymodule 414 may also obtain information indicating that a memory deviceof an additional computing device is a spinning hard drive or a solidstate drive.

The computing device discovery module 414 may also obtain informationregarding a chassis of one or more additional computing devices 408located in a trusted environment of a user of the computing device 402.Additionally, the computing device discovery module 414 may obtaininformation regarding network features included in a trusted environmentof a user of the computing device 402. In some implementations, thecomputing device discovery module 414 may obtain information indicatingcommunications technologies used by one or more of the additionalcomputing devices 408. For example, the computing device discoverymodule 416 may obtain information indicating that an additionalcomputing device 408 communicates using an IEEE 802.11 communicationsstandard. In another example, the computing device discovery module 414may obtain information indicating that an additional computing device408 communicates using a Bluetooth communications standard. In anadditional example, the computing device discovery module 414 may obtaininformation indicating that an additional computing device 408communicates using a wide area wireless network communications standard(e.g., GSM, UMTS, CDMA, LTE, etc.). In a further example, the computingdevice discovery module 414 may obtain information indicating that anadditional computing device 408 communicates using a wired local areanetwork interface.

Additionally, the computing device discovery module 414 may obtaininformation about power features of computing devices included in atrusted environment related to the computing device 402. For example,the computing device discovery module 414 may obtain informationindicating that one or more additional computing devices 408 may enter alow power mode after being inactive after a threshold period of time. Inanother example, the computing device discovery module 414 may obtaininformation indicating that one or more additional computing devices 408may power off after being inactive after a threshold period of time.Further, the computing device discovery module 414 may obtaininformation indicating that one or more of the additional computingdevices 408 may exit a lower power mode, power on, or both based atleast partly on receiving one or more signals from another computingdevice, such as the computing device 402.

The computing device ranking module 416 may include computer-readableinstructions that are executable by the processor 410 to rank computingdevices included in a trusted environment associated with the computingdevice 402 according to a fitness of the computing devices to storebackup copies of the data files 428. The fitness of computing devices tostore backup copies of the data files 428 may be based at least partlyon fitness scores determined by the computing device ranking module 416from information obtained by the computing device discovery module 414.In particular implementations, one or more computing devices included ina trusted environment associated with the computing device 402 may beconsidered candidate backup storage devices and the computing deviceranking module 416 may analyze features of the candidate backup storagedevices to determine fitness scores for the candidate backup storagedevices. The fitness scores of the candidate backup storage devices maybe used to rank the candidate backup storing devices. In variousimplementations, the candidate backup storage devices may be ranked indecreasing order from the fitness score with the greatest value to thefitness score with the lowest value, where the candidate backup storagedevice having the fitness score with the greatest value is predicted bythe computing device ranking module 416 to have the greatest fitness tostore backup copies of the data files 428 and the candidate backupstorage device having the fitness score with the lowest value ispredicted to have the least fitness to store backup copies of the datafiles 428.

The computing device ranking module 416 may determine fitness scores forcandidate backup storage devices by determining values for criteria usedto determine the fitness scores. The criteria used to determine thefitness scores may correspond to properties of the candidate backupstorage devices. Additionally, weights may be assigned to the criteriaused to determine the fitness scores, where the weights reflect therelative importance of the criteria. In some cases, the criteria and/orthe corresponding weights of the criteria used to determine fitnessscores for the candidate backup storage devices may be specified by oneor more users of the computing device 402, a distributor of a backupdata system that may backup and restore data files, a producer of abackup data system that may backup and restore data files, an enterpriserelated to the computing device 402, or combinations thereof. Inillustrative implementations, the criteria used to determine the fitnessscores may correspond to memory features of the candidate backup storagedevices, chassis of the candidate backup storage devices, networkfeatures of the candidate backup storage devices, power features of thecandidate backup storage devices, location features of the candidatebackup storage devices, or combinations thereof.

The data file ranking module 418 may include computer-readableinstructions that are executable by the processor 410 to rank at least aportion of the data files 428. The data file ranking module 418 maydetermine priority scores for at least a portion of the data files 428and rank at least a portion of the data files 428 based at least partlyon the priority scores. In some implementations, the data file rankingmodule 418 may rank at least a portion of the data files 428 indecreasing order from the priority score having the greatest value tothe priority score having the lowest value, where the data file 428having the priority score with the greatest value is predicted by thecomputing device ranking module 416 to have the highest priority forbeing backed up and data file 428 having the priority score with thelowest value is predicted to have the lowest priority for being backedup.

In particular implementations, the data file ranking module 418 maydetermine priority scores for at least a portion of the data files 428based at least partly on one or more criteria. The one or more criteriamay correspond with properties of the data files 428. For example, oneor more criteria used by the data file ranking module 418 may include afile type, a file size, usage history, file source, storage location,user preferences, or combinations thereof. In some implementations, oneor more of the criteria used to determine the priority scores may beassociated with a weighting that indicates a relative importance of thecriteria with respect to prioritizing at least a portion of the datafiles 428 for backup. In some cases, the criteria and/or thecorresponding weights of the criteria used to determine the priorityscores for at least a portion of the data files 428 may be specified byone or more users of the computing device 402, a distributor of a backupdata system that may backup and restore data files, a producer of abackup data system that may backup and restore data files, an enterpriserelated to the computing device 402, or combinations thereof.

The data file transfer module 420 may include computer-readableinstructions that are executable by the processor 410 to send backupcopies of at least a portion of the data files 428 to additionalcomputing devices for backup storage. In some cases, the data filetransfer module 420 may produce copies of one or more of the data files428 that are to be backed up. The data file transfer module 420 may alsosend the copies of the data files 428 to be backed up to one or more ofthe additional computing devices 408 that are included in a trustedenvironment associated with the computing device 402.

In some implementations, the data file transfer module 420 may determinethat backup copies of certain data files 428 are to be backed up byparticular backup storage devices. For example, the data file transfermodule 420 may utilize the rankings of at least a portion of the datafiles 428 and rankings of one or more of the additional computingdevices 408 that are backup storage devices to pair data files 428 withcandidate backup storage devices. To illustrate, the data file transfermodule 420 may identify a candidate backup storage device having aparticular ranking and associate one or more of the data files 428 to bebacked up with the candidate backup storage device based at least partlyon the rankings of the one or more data files 428. In an illustrativeexample, the data file transfer module 420 may associate a highestranked candidate backup storage device with a first group of the datafiles 428 having relatively higher rankings. In another illustrativeexample, the data file transfer module 420 may associate a secondhighest ranked candidate backup storage device with a second group ofthe data files 428 having rankings that are below those of the firstgroup. In this way, the data files 428 having the highest priorities arebacked up on the candidate backup storage devices having the mostfitness to store backup copies of the data files 428 and the data files428 having lower priorities are backed up on backed up on the candidatebackup storage devices having the least fitness to store backup copiesof the data files 428. After determining the backup storage devices thatare associated with one or more of the data files 428, the data filetransfer module 420 may make copies of the one or more data files 428and send the copies to the corresponding backup storage device.

The manifest module 422 may include computer-readable instructions thatare executable by the processor 410 to produce the manifests 432. Themanifest module 422 may produce a manifest 432 that indicates the backupstorage devices that are storing backup copies of the data files 428.For example, the manifest module 422 may determine that a first backupstorage device is storing a first group of the data files 428 and that asecond backup storage device is storing a second group of the data files428. Continuing with this example, the manifest module 422 may produce amanifest 432 that indicates that the first backup storage device isstoring the first group of the data files 428 and that the second backupstorage device is storing the second group of the data files 428. Insome implementations, the manifest 432 that indicates the backup storagedevices that stores backup copies of at least a portion of the datafiles 428 may be referred to as a “master manifest” for the computingdevice 402.

The manifest module 422 may also determine that the computing device 402is storing backup copies of data files of one or more of the additionalcomputing devices 408. In these situations, the manifest module 422 mayproduce a manifest 432 for each of the additional computing devices 408for which the computing device 402 is storing backup copies of datafiles. For example, the manifest module 422 may produce a first manifest432 indicating data files of a first additional computing device 408that are being backed up by the computing device 402 and a secondmanifest 432 indicating data files of a second additional computingdevice 408 that are being backed up by the computing device 402.

Additionally, the manifest module 422 may update the manifests 432. Inparticular implementations, the manifest module 422 may determine thatadditional data files of one or more of the additional computing devices408 are being backed up by the computing device 402. The manifest module422 may update the manifest 432 of each additional computing device 408as new data files are being backed up by the computing device 402 forone or more of the additional computing devices 408 by adding the newdata files to the manifests 432. The manifest module 422 may also updatemanifests 432 of additional computing devices 408 as data files of theadditional computing devices 408 are no longer being backed up by thecomputing device 402 by removing data files from the manifests 432.Furthermore, the manifest module 422 may update a manifest 432associated with the computing device 402. For example, the manifestmodule 422 may determine that a data file 428 is being backup on by adifferent backup storage device and the manifest module 422 may updatethe master manifest of the computing device 402 to indicate that thedata file 428 is being backed up on a different backup storage device.In another example, the manifest module 422 may determine that a newlycreated data file 428 is to be backed up on a particular backup storagedevice and the manifest module 424 may update the master manifest of thecomputing device 402 to indicate that the newly created data file 428 isbeing backed up on the particular backup storage device.

The data file recovery module 424 may include computer-readableinstructions that are executable by the processor 410 to recover one ormore of the data files 428 that may be inaccessible. In someimplementations, the data file recovery module 424 may determine that adata file 428 is no longer accessible to an application of the computingdevice 402. In some cases, the data associated with the data file 428may have been deleted from the computing device 402. In other cases, thedata associated with the data file 428 may have been corrupted and nolonger useable by an application of the computing device 402. The datafile recovery module 424 may determine a backup data device that isstoring a backup copy of the data file 428 that is inaccessible to thecomputing device 402. In particular, the data file recovery module 424may utilize a manifest 432 of the computing device 402 that indicatesthe backup data storage device storing a backup copy of the data file428 that is inaccessible by the computing device 402. The data filerecovery module 424 may request, from the backup storage device, a copyof the data file 428 that is no longer accessible to the computingdevice 402. The data file recovery module 424 may then store the copy ofthe data file 428 received from the backup storage device.

The data file recovery module 424 may also receive requests from anadditional computing device 408 to provide backup copies of data filesof the additional computing device 408 that are no longer accessible bythe additional computing device 408. In some implementations, the datafile recovery module 424 may receive a request from an additionalcomputing device 408 for backup copies of data files associated with theadditional computing device 408. The data file recovery module 424 mayaccess a manifest 432 that is related to the additional computing device408 and determine one or more of the backup data files 430 that areassociated with the additional computing device 408 that provided therequest. The data file recovery module 424 may produce copies of thebackup data files 430 associated with the additional computing device408 making the request and send the copies of the particular backup datafiles 430 to the additional computing device 408.

In some cases, the additional computing device 408 providing the requestfor backup copies to the computing device 402 may have originally sentthe backup data files 430 to the computing device 402. In thesesituations, the data files requested by the additional computing device408 may have been deleted from memory of the additional computing device408, corrupted, such as by a virus, or both. In other scenarios, theadditional computing device 408 providing the request for backup copiesto the computing device 402 may be a different computing device from thecomputing device that originally sent the backup data files 430 to thecomputing device 402. To illustrate, the memory of the computing devicethat originally providing the backup data files 430 to the computingdevice 402 may have been damaged to the extent that data files of thecomputing device became inaccessible to the computing device. In anotherillustration, the computing device that originally provided the backupdata files 430 to the computing device 402 may have been lost or stolen.Thus, the additional computing device 408 requesting the backup datafiles 430 from the computing device 402 may be restoring data files ofone or more portions of the memory of a computing device that is nolonger accessible to a previous user of the computing device.

In situations where the additional computing device 408 is a replacementcomputing device, the data file recovery module 424 may receive arequest from the replacement computing device to obtain one or more datafiles being backed up by the computing device 402 and a storage locationfor the one or more data files on the replacement computing device. Forexample, the data file recovery module 424 may receive a request torecover one or more backup data files 430 and an indication to store theone or more backup data files 430 in a My Documents folder of thereplacement computing device. In other implementations, the data filerecovery module 424 may receive a request from the replacement computingdevice to restore data files being backed up to one or more differentcomputing devices. To illustrate, the data file recovery module 424 mayreceive a request to recover one or more backup data files 430 from afirst additional computing device 408 that indicates the one or morebackup data files 430 are to be restored to one or more secondadditional computing devices 408 and not the first additional computingdevice 408 sending the request. In these scenarios, the data filerecovery module 424 may send the one or more backup data files 430 beingrestored to the one or more second additional computing devices 408 forstorage.

In the flow diagrams of FIGS. 5 and 6, each block represents one or moreoperations that can be implemented in hardware, software, or acombination thereof. In the context of software, the blocks representcomputer-executable instructions that, when executed by one or moreprocessors, cause the processors to perform the recited operations.Generally, computer-executable instructions include routines, programs,objects, modules, components, data structures, and the like that performparticular functions or implement particular abstract data types. Theorder in which the blocks are described is not intended to be construedas a limitation, and any number of the described operations can becombined in any order and/or in parallel to implement the processes. Fordiscussion purposes, the processes 500 and 600 may be described withreference to FIG. 1, 2, 3, or 4 as described above, although othermodels, frameworks, systems and environments may implement theseprocesses.

FIG. 5 is a flowchart of an example process to backup data according tosome embodiments. At 502, the process 500 includes establishing, by afirst computing device, a connection with a local area network. In somecases, the local area network may include a wireless local area network.The wireless local area network may be accessed by a wireless accesspoint. In some implementations, the first computing device may identifya number of computing devices connected to the local area network byobtaining, from the wireless access point, identifiers of computingdevices connected to the local area network. Based at least partly onthe information obtained from the wireless access point, the firstcomputing device may determine that the second computing device and thethird computing device are connected to the local area network. Forexample, the first computing device may determine that the secondcomputing device and the third computing device are connected to a localarea wireless network based at least partly on the identifiers obtainedfrom the wireless access point.

In some implementations, the first computing device may establish theconnection with the local area network via a first network interface ofthe first computing device that sends and receives communicationsaccording to a first wireless communications standard. The firstcomputing device may also communicate with other computing devices viadifferent types of networks using an additional network interface of thefirst computing device. For example, the first computing device mayestablish an additional connection with an additional computing devicevia a second network interface of the first computing device, where thesecond network interface may send and receive communications accordingto a second wireless communications standard.

At 504, the process 500 includes determining, by the first computingdevice, a storage capacity of a second computing device connected to thelocal area network. At 506, the process 500 includes determining, by thefirst computing device, a rank of the second computing device withrespect to a third computing device based at least partly on the storagecapacity of the second computing device and an additional storagecapacity of the third computing device. The ranking may be also based atleast partly on one or more additional features of the second computingdevice and each of the one or more features may be associated with arespective weight and a respective value. In some cases, the one or moreadditional features of the second computing device may include a chassisof the second computing device, a network interface of the secondcomputing device, a location of the second computing device, features ofmemory of the computing device, the second computing device entering alow power mode after a period of time, or combinations thereof.

The ranking of the second computing device may also be determined basedon information obtained from a wireless access point associated with thelocal area network. For example, the first computing device may obtaininformation from the wireless access point indicating an average amountof time that the second computing device is connected to the local areanetwork during a specified period of time, such as an average amount oftime per day that the second computing device is connected to the localarea network. In these situations, the first computing device maydetermine that the data file of the plurality of data files is to bebacked up on the second computing device based at least partly on theaverage amount of time that the second computing device is connected tothe local area network during the specified period of time.

In particular implementations, the first computing device may also beranked by other computing devices based on information about the firstcomputing device provided to the other computing devices. For example,the first computing device may send additional information to the secondcomputing device and the additional information may indicate a chassisof the first computing device, a communications standard utilized by anetwork interface of the first computing device, a location of the firstcomputing device, that the first computing device enters a low powermode after a period of inactivity, or combinations thereof.

At 508, the process 500 includes identifying, by the first computingdevice, a plurality of data files to be backed up, where the pluralityof data files are stored by the memory of the first computing device. At510, the process 500 includes determining, by the first computingdevice, a data file of the plurality of data files to be backed up onthe second computing device based at least partly on a rank of thesecond computing device. In various implementations, the data file mayalso be ranked with respect to the plurality of data files to determinethat the data file is to be backed up by the second computing device.The rank of the data file may indicate a priority for backing up thedata file. The priority of the data file may be based at least partly onan amount of the memory consumed by the data file, a usage history ofthe data file, a type of content of the data file, a source of the datafile, a storage location of the data file, or combinations thereof.

At 512, the process 500 includes sending, by the first computing device,a copy of the data file to the second computing device. In somesituations, the first computing device may subsequently determine thatthe data file has become inaccessible by one or more processors of thefirst computing device. In addition, the first computing device maydetermine that a copy of the data file is stored by the second computingdevice. The first computing device may determine that the copy of thedata file is stored by the second computing device based at least partlyon a manifest stored by the first computing device that indicatesstorage locations of backup copies of data files of the first computingdevice. The first computing device may send a request to the secondcomputing device to obtain the data file and receive the data file fromthe second computing device based at least partly on the request.

FIG. 6 is a flowchart of an example process backup and recover dataaccording to some embodiments. At 602, the process 600 includesestablishing, by a first computing device, a connection with a localarea network. At 604, the process 600 includes providing informationindicating a storage capacity of the first computing device to a secondcomputing device connected to the local area network. The secondcomputing device may utilize at least the storage capacity of the firstcomputing device to identify data files to be backed up on the firstcomputing device. At 606, the process 600 includes obtaining a data filefrom the second computing device. In particular implementations, acompression algorithm may be applied with respect to the data filebefore storing the data file in the memory of the first computingdevice.

At 608, the process 600 includes writing information to a manifeststored by the first computing device. The manifest may indicate one ormore data files that are backup copies of data files of the secondcomputing device. The manifest may also indicate a storage location ofthe data file in memory of the first computing device. Other manifestsproduced by the first computing device may indicate additional datafiles of additional computing devices that are being backed up by thefirst computing devices and storage locations of the backup copies ofthe additional data files. Additionally, the manifest may be updated toindicate new data files that are received by the first computing devicefrom additional computing devices and that are to be backed up by thefirst computing device.

At 610, the process 600 includes receiving a request to obtain the datafile of the second computing device that is backed up on the firstcomputing device. At 612, the process 600 includes accessing themanifest based at least partly on the request to obtain the data file ofthe second computing device. At 614, the process 600 includesdetermining, based at least partly on the manifest, that the data fileis stored in the memory of the first computing device. At 616, theprocess 600 includes sending a copy of the data file to an additionalcomputing device. In some cases, the first computing device may producea copy of the data file before providing the data file to the additionalcomputing device. The additional computing device may be the secondcomputing device in some situations. In other scenarios, the additionalcomputing device may be different from the second computing device.

FIG. 7 illustrates an example configuration of a computing device 700that can be used to implement the systems and techniques describedherein according to some embodiments. In some cases, the computingdevice 700 may include the computing device 102 or the computing device402. Additionally, the additional computing devices 108, 110, 112, 114,408 may be represented by the computing device 700. The computing device700 may include one or more processors 702, a memory 704, communicationinterfaces 706, input/output (I/O) devices 708, and one or more massstorage devices 710, configured to communicate with each other, such asvia a system bus 712 or other suitable connection.

The processors 702 may include a single processing unit or a number ofprocessing units, all of which may include single or multiple computingunits or multiple cores. The processors 702 can be implemented as one ormore microprocessors, microcomputers, microcontrollers, digital signalprocessors, central processing units, state machines, logic circuitries,and/or any devices that manipulate signals based on operationalinstructions. Among other capabilities, the processors 702 can beconfigured to fetch and execute computer-readable instructions stored inthe memory 704, mass storage devices 710, or other computer-readablemedia.

Memory 704 and mass storage devices 710 are examples of computer storagemedia for storing instructions which are executed by the processors 702to perform the various functions described above. For example, memory704 may generally include both volatile memory and non-volatile memory(e.g., RAM, ROM, or the like). Further, mass storage devices 710 maygenerally include hard disk drives, solid-state drives, removable media,including external and removable drives, memory cards, flash memory,floppy disks, optical disks (e.g., CD, DVD), a storage array, a networkattached storage, a storage area network, or the like. Both memory 704and mass storage devices 710 may be collectively referred to as memoryor computer storage media herein, and may be a non-transitory mediacapable of storing computer-readable, processor-executable programinstructions as computer program code that can be executed by theprocessor 702 as a particular machine configured for carrying out theoperations and functions described in the implementations herein. Thememory of the computing device 700 may be used to store the data files428, the backup data files 430, and the manifest(s) 432.

The computer storage media, such as memory 704 and mass storage devices710, may be used to store software applications and data. For example,the computer storage media may include software applications, such as,for example, the computing device discovery module 414, the computingdevice ranking module 416, the data file ranking module 418, the datafile transfer module 420, the manifest module 422, and the data filerecovery module 424.

The computing device 700 may also include one or more communicationinterfaces 706 for exchanging data via a network. The communicationinterfaces 706 can facilitate communications within a wide variety ofnetworks and protocol types, including wired networks (e.g., Ethernet,DOCSIS, DSL, Fiber, USB etc.) and wireless networks (e.g., WLAN, GSM,CDMA, 802.11, Bluetooth, Wireless USB, cellular, satellite, etc.), theInternet, and the like. Communication interfaces 706 can also providecommunication with external storage (not shown), such as in a storagearray, network attached storage, storage area network, or the like.

I/O devices 710 may be devices that receive various inputs from a userand provide various outputs to the user, and may include a displaydevice, keyboard, a remote controller, a mouse, a printer, audioinput/output devices, and so forth.

The example systems and computing devices described herein are merelyexamples suitable for some implementations and are not intended tosuggest any limitation as to the scope of use or functionality of theenvironments, architectures and frameworks that can implement theprocesses, components and features described herein. Thus, embodimentsherein are operational with numerous environments or architectures, andmay be implemented in general purpose and special-purpose computingsystems, or other devices having processing capability. Generally, anyof the functions described with reference to the figures can beimplemented using software, hardware (e.g., fixed logic circuitry), or acombination of these implementations. The term “module,” “mechanism” or“component” as used herein generally represents software, hardware, or acombination of software and hardware that can be configured to implementprescribed functions. For instance, in the case of a softwareimplementation, the term “module,” “mechanism” or “component” canrepresent program code (and/or declarative-type instructions) thatperforms specified tasks or operations when executed on a processingdevice or devices (e.g., CPUs or processors). The program code can bestored in one or more computer-readable memory devices or other computerstorage devices. Thus, the processes, components and modules describedherein may be implemented by a computer program product.

Furthermore, this disclosure provides various example embodiments, asdescribed and as illustrated in the drawings. However, this disclosureis not limited to the embodiments described and illustrated herein, butcan extend to other embodiments, as would be known or as would becomeknown to those skilled in the art. Reference in the specification to“one embodiment,” “this embodiment,” “these embodiments” or “someembodiments” means that a particular feature, structure, orcharacteristic described is included in at least one implementation, andthe appearances of these phrases in various places in the specificationare not necessarily all referring to the same embodiment.

Software modules include one or more of applications, bytecode, computerprograms, executable files, computer-executable instructions, programmodules, code expressed as source code in a high-level programminglanguage such as C, C++, Perl, or other, a low-level programming codesuch as machine code, etc. An example software module is a basicinput/output system (BIOS) file. A software module may include anapplication programming interface (API), a dynamic-link library (DLL)file, an executable (e.g., .exe) file, firmware, and so forth.

Processes described herein may be illustrated as a collection of blocksin a logical flow graph, which represent a sequence of operations thatcan be implemented in hardware, software, or a combination thereof. Inthe context of software, the blocks represent computer-executableinstructions that are executable by one or more processors to performthe recited operations. The order in which the operations are describedor depicted in the flow graph is not intended to be construed as alimitation. Also, one or more of the described blocks may be omittedwithout departing from the scope of the present disclosure.

Although various embodiments of the method and apparatus of the presentinvention have been illustrated herein in the Drawings and described inthe Detailed Description, it will be understood that the invention isnot limited to the embodiments disclosed, but is capable of numerousrearrangements, modifications and substitutions without departing fromthe scope of the present disclosure.

What is claimed is:
 1. One or more non-transitory computer-readablemedia, comprising instructions that are executable by one or moreprocessors to perform operations comprising: establishing, by a firstcomputing device, a connection with a local area network, the local areanetwork comprising a plurality of devices and a second computing device;providing a plurality of device criteria associated with the firstcomputing device to the plurality of devices and the second computingdevice that are connected to the local area network, the plurality ofdevice criteria comprising: a network interface of the first computingdevice, a location of the first computing device, an average amount oftime that the first computing device is connected to the local areanetwork during a specified period of time, an amount of time before thefirst computing device enters a low power mode, and a storage capacityof the first computing device; receiving, by the first computing device,a data file torn the second computing device based on the secondcomputing device determining that the first computing device has ahighest rank compared to ranks of the plurality of computing devices,wherein the highest rank and the ranks are determined based on theplurality of device criteria, respectively, associated with the firstcomputing device and the plurality of computing devices, respectively;storing the data file at a particular location on the first computingdevice; and writing information to a manifest, wherein the informationidentifies the particular location of the data file.
 2. The one or morenon-transitory computer-readable media of claim 1, wherein theoperations further comprise: receiving, from an additional computingdevice, a request to obtain the data file; accessing, based at leastpartly on the request, the manifest; determining, based at least partlyon the manifest, the particular location of the data file; and sending acopy of the data file to the additional computing device.
 3. The one ormore non-transitory computer-readable media of claim 1, wherein storingthe data file at the particular location on the first computing devicecomprises: applying a compression algorithm to the data file to create acompressed data file; and storing the compressed data file at theparticular location on the first computing device.
 4. The one or morenon-transitory computer-readable media of claim 1, wherein the pluralityof device criteria associated with the first computing device furthercomprise: a chassis type of the first computing device; and one or morefeatures of the memory of the first computing device.
 5. The one or morenon-transitory computer-readable media of claim 4, wherein the chassistype comprises one of a server chassis, a storage chassis, a portablechassis, or a handheld chassis.
 6. The one or more non-transitorycomputer-readable media of claim 1, wherein establishing the connectionwith the local area network includes accessing a wireless access pointof the local area network.
 7. The one or more non-transitorycomputer-readable media of claim 1, wherein the second computing devicedetermines a corresponding priority of the data file based on one of aplurality of file criteria, the plurality of file criteria comprising: afile type of the data file; a file source of the data file; an amount ofmemory consumed by the data file; a usage history of the data file; anda storage location of the data file.
 8. A method comprising:establishing, by a first computing device, a connection with a localarea network, the local area network comprising a plurality of devicesand a second computing device; providing, by the first computing device,a plurality of device criteria associated with the first computingdevice to the plurality of devices and the second computing device thatare connected to the local area network, the plurality of devicecriteria comprising: a network interface of the first computing device,a location of the first computing device, an average amount of time thatthe first computing device is connected to the local area network duringa specified period of time, an amount of time before the first computingdevice enters a low power mode, and a storage capacity of the firstcomputing device; receiving, by the first computing device, a data filefrom the second computing device based on the second computing devicedetermining that the first computing device has a highest rank comparedto ranks of the plurality of computing devices, wherein the highest rankand the ranks are determined based on the plurality of device criteria,respectively, associated with the first computing device and theplurality of computing devices, respectively; storing, by the firstcomputing device, the data file at a particular location on the firstcomputing device; and adding, by the first computing device, informationto a manifest, wherein the manifest identifies the particular locationof the data file.
 9. The method of claim 8, further comprising:receiving, from an additional computing device, a request to obtain thedata file; accessing, based at least partly on the request, themanifest; determining, based at least partly on the manifest, theparticular location of the data file; and sending a copy of the datafile to the additional computing device.
 10. The method of claim 8,wherein storing the data file at the particular location on the firstcomputing device comprises: applying a compression algorithm to the datafile to create a compressed data file; and storing the compressed datafile at the particular location on the first computing device.
 11. Themethod of claim 8, further comprising: receiving, from an additionalcomputing device, a request to store an additional data file; storingthe additional data file at a second particular location on the firstcomputing device; and adding additional information to the manifest,wherein the additional information identifies the second particularlocation of the additional data file.
 12. The method of claim 11,further comprising: receiving, from the additional computing device, arequest to provide the additional data file; accessing the additionalinformation in the manifest, the additional information identifying thesecond particular location of the additional data file; retrieving theadditional data file from the second particular location on the firstcomputing device; and sending the additional data file from the firstcomputing device to the additional computing device.
 13. The method ofclaim 8, wherein the plurality of device criteria associated with thefirst computing device further comprise: a chassis type of the firstcomputing device, wherein the chassis type comprises one of a serverchassis, a storage chassis, a portable chassis, or a handheld chassis;and one or more features of the memory of the first computing device,wherein the one or more features of the memory comprise at least one ofa spinning hard drive, a solid-state drive, or a flash memory device.14. The method of claim 8, wherein: the second computing devicedetermines a corresponding priority of the data file on one of aplurality of file criteria, the plurality of file criteria comprising: afile type of the data file; a file source of the data file; an amount ofmemory consumed by the data file; a usage history of the data file; anda storage location of the data file.
 15. A first computing devicecomprising: one or more processors, and one or more non-transitorycomputer-readable media, comprising instructions that are executable byone or more processors to perform operations comprising: establishing aconnection with a local area network, the local area network comprisinga plurality of devices and a second computing device; providing aplurality of device criteria associated with the first computing deviceto the plurality of devices and second computing device that areconnected to the local area network, the plurality of device criteriacomprising: a network interface of the computing device, a location ofthe computing device, an average amount of time that the computingdevice is connected to the local area network during a specified periodof time, an amount of time before the computing device enters a lowpower mode, and a storage capacity of the computing device; receiving adata file from the second computing device based on the second computingdevice determining that the first computing device has a highest rankcompared to ranks of the plurality of computing devices, wherein thehighest rank and the ranks are determined based on the plurality ofdevice criteria, respectively, associated with the first computingdevice and the plurality of computing devices, respectively; storing thedata file at a particular location on the first computing device; andwriting information to a manifest, wherein the information identifiesthe particular location of the data file.
 16. The first computing deviceof claim 15, wherein the operations further comprise: receiving, from anadditional computing device, a request to obtain the data file;accessing, based at least partly on the request, the manifest;determining, based at least partly on the manifest, the particularlocation of the data file; and sending a copy of the data file to theadditional computing device.
 17. The first computing device of claim 15,wherein storing the data file at the particular location on thecomputing device comprises: applying a compression algorithm to the datafile to create a compressed data file; and storing the compressed datafile at the particular location on the computing device.
 18. The firstcomputing device of claim 15, wherein the first device criteria furthercomprise: a chassis type of the computing device, wherein the chassistype comprises one of a server chassis, a storage chassis, a portablechassis, or a handheld chassis; and one or more features of the memoryof the computing device, wherein the one or more features of the memorycomprise at least one of a spinning hard drive, a solid-state drive, ora flash memory device.
 19. The first computing device of claim 15, theoperations further comprising: determining, from a wireless access pointassociated with the local area network, a second identifier associatedwith the second computing device; and determining that the secondcomputing device is connected to the local area network based at leastpartly on the second identifier associated with the second computingdevice.
 20. The first computing device of claim 15, wherein theoperations further comprise: receiving, from an additional computingdevice, a request to obtain the data file; determining, based at leastpartly on the manifest, the particular location of the data file;determining that the data file is unavailable or inaccessible;determining, based at least partly on the manifest, that a copy of thedata file is stored in a second particular location on a third computingdevice; and sending an instruction to the third computing device to sendthe copy of the data file to the additional computing device.